/**
 * @file genre.c
 * @brief Fichier source du module genre.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de genre                          

********************************************************************* */

#include "genre.h"

/* *********************************************************************

                        Fonctions                                      

********************************************************************* */

void init_Gen(Genre * genre)
{
  if(genre)
    {
      genre->id = 0;
      genre->libelle = NULL;
      genre->maj = 0;
      genre->sup = 0;
    }
}

void liberer_Gen(Genre * genre)
{
  if(genre)
    {
      genre->id = 0;
      if(genre->libelle)
	{
	  free(genre->libelle);
	  genre->libelle = NULL;
	}
    }
}

void * creer_Gen()
{
  Genre *genre;
  genre = (Genre *) malloc ( 1 * sizeof(Genre));
  init_Gen(genre);
  return genre;
}

void detruire_Gen(Genre ** genre)
{
  if((*genre))
    {
      liberer_Gen((*genre));
      free((*genre));
      (*genre) = NULL;
    }
}

void copier_Gen(Genre **dest, const Genre *src)
{
  if((*dest) == NULL)
    {
      (*dest) = creer_Gen();
    }
  if(src)
    {
      (*dest)->id = src->id;
      copier_Uti(&((*dest)->libelle), src->libelle);
    }
}
unsigned int getId_Gen(const Genre * ptr)
{
	return ptr->id;
}

void setId_Gen(Genre *ptr, const unsigned int val)
{
	ptr->id = val;
}

char * getLibelle_Gen(const Genre * ptr)
{
	return ptr->libelle;
}

void setLibelle_Gen(Genre *ptr, const char * val)
{
  if(ptr)
    {
      copier_Uti(&(ptr->libelle), val);
    }
}

void setMaj_Gen(Genre *ptr, const char b)
{
  if(ptr)
    {
      ptr->maj = b;
      if(b == 1)
	ptr->sup = !b;
    }
}

char getMaj_Gen(const Genre *ptr)
{
  if(ptr)
    return ptr->maj;
  return 0;
}

void setSup_Gen(Genre *ptr, const char b)
{
  if(ptr)
    {
      ptr->sup = b;
      if(b == 1)
	ptr->maj = !b;
    }
}

char getSup_Gen(const Genre *ptr)
{
  if(ptr)
    return ptr->sup;
  return 0;
}
